function Graph_CfHist(DateVec,ObsHist,CfHist,ObsTag,FileName)

%% Preliminary Assignment
Num_Obs             =   size(ObsHist,1);
Num_Shock           =   3;
LineStyle           =   {'b:','b--','r-'};
ShockList           =   {'Eps_Z','Eps_PHI_D','Eps_PHI_E'};
ShockTag            =   {'w/o TFP Shock', ...
                         'w/o Debt Fin. Shock', ...
                         'w/o Equity Fin. Shock'};
N_col               =   Num_Shock;
N_row               =   Num_Obs;
fig_size            =   [N_col*300,N_row*300];
Pos                 =   [50, 50, fig_size];  
subplot_gap         =   [0.06,0.03];
subplot_VMargin     =   [0.15,0.1];
subplot_HMargin     =   [0.05,0.01]; 

%% Generate Graphs
TempSubPlotFun      =   @(id)subtightplot(N_row,N_col,id,...
                                          subplot_gap,...
                                          subplot_VMargin,...
                                          subplot_HMargin);
fig         =   figure('Name','Counter-factual History','Position',Pos);
for i_obs=1:Num_Obs
    for i_shock=1:Num_Shock
        ax          =   TempSubPlotFun((i_obs-1)*N_col+i_shock);
        Title       =   ShockTag{i_shock};
        TempDataMat =   [ObsHist(i_obs,:);...
                         CfHist.(ShockList{i_shock})(i_obs,:)];
        [PH,ax]     =   MultiSeriesSoloPlot(DateVec,TempDataMat,...
                                            {'k-',LineStyle{i_shock}},...
                                            1,'Datetime',ax);
        if i_obs==1
            title(ax,Title,'fontsize',14,'interpreter','latex');
        end
        if i_shock==1
           ylabel(ax,ObsTag{i_obs},'fontsize',14,'interpreter','latex');
            
           
           
        end
        if i_obs==Num_Obs
            xlabel(ax,'Year','fontsize',14,'interpreter','latex');
        end
        legend(PH,{'Observed','Counter-Factual'},...
               'fontsize',10,'interpreter','latex','Box','off','Color','none',...
               'location','southeast','orientation','vertical');
    end
end


fig.PaperUnits  =   'points';
fig.PaperSize   =   fig_size;
if nargin>4
    print(fig,[FileName,'CFHistory'],'-dpdf','-bestfit');
end
